{
 "cells": [
  {
   "cell_type": "code",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-02-26T06:35:27.657578Z",
     "start_time": "2025-02-26T06:35:27.313099Z"
    }
   },
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "index1 = pd.MultiIndex.from_arrays([['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd'],\n",
    "                [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]], names=['cloth', 'size'])\n",
    "\n",
    "ser_obj = pd.Series(np.random.randn(12),index=index1)\n",
    "ser_obj"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "cloth  size\n",
       "a      0       0.403427\n",
       "       1      -1.627706\n",
       "       2      -0.398508\n",
       "b      0       0.146341\n",
       "       1      -1.453104\n",
       "       2       1.828868\n",
       "c      0       1.967788\n",
       "       1      -0.519261\n",
       "       2       0.645561\n",
       "d      0      -0.240424\n",
       "       1      -0.250380\n",
       "       2       0.387111\n",
       "dtype: float64"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 1
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-26T06:36:27.888636Z",
     "start_time": "2025-02-26T06:36:27.881575Z"
    }
   },
   "cell_type": "code",
   "source": [
    "df_obj=ser_obj.unstack(0)\n",
    "print(df_obj)\n"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cloth         a         b         c         d\n",
      "size                                         \n",
      "0      0.403427  0.146341  1.967788 -0.240424\n",
      "1     -1.627706 -1.453104 -0.519261 -0.250380\n",
      "2     -0.398508  1.828868  0.645561  0.387111\n"
     ]
    }
   ],
   "execution_count": 2
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-26T06:37:57.734702Z",
     "start_time": "2025-02-26T06:37:57.729974Z"
    }
   },
   "cell_type": "code",
   "source": [
    "#计算最小值有空值如何处理\n",
    "df_obj.loc[0,'b']=np.nan\n",
    "print(df_obj)\n",
    "print('-'*50)\n",
    "print(df_obj.min(axis=0, skipna=True))"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cloth         a         b         c         d\n",
      "size                                         \n",
      "0      0.403427       NaN  1.967788 -0.240424\n",
      "1     -1.627706 -1.453104 -0.519261 -0.250380\n",
      "2     -0.398508  1.828868  0.645561  0.387111\n",
      "--------------------------------------------------\n",
      "cloth\n",
      "a   -1.627706\n",
      "b   -1.453104\n",
      "c   -0.519261\n",
      "d   -0.250380\n",
      "dtype: float64\n"
     ]
    }
   ],
   "execution_count": 7
  },
  {
   "cell_type": "code",
   "source": [
    "#观察数据分布的一种 非常常用方法\n",
    "print(df_obj.describe())"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2025-02-26T06:38:09.396276Z",
     "start_time": "2025-02-26T06:38:09.389848Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cloth         a         b         c         d\n",
      "count  3.000000  2.000000  3.000000  3.000000\n",
      "mean  -0.540929  0.187882  0.698029 -0.034565\n",
      "std    1.023029  2.320705  1.244354  0.365215\n",
      "min   -1.627706 -1.453104 -0.519261 -0.250380\n",
      "25%   -1.013107 -0.632611  0.063150 -0.245402\n",
      "50%   -0.398508  0.187882  0.645561 -0.240424\n",
      "75%    0.002460  1.008375  1.306674  0.073343\n",
      "max    0.403427  1.828868  1.967788  0.387111\n"
     ]
    }
   ],
   "execution_count": 8
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": "#mean,min,max,sum,count"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "# 下面内容（放到最后讲解）"
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [
    {
     "data": {
      "text/plain": "size\n0   -0.381273\n1    0.502043\n2    1.317067\nName: c, dtype: float64"
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_obj.loc[:,'c']"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-04-11T07:06:04.030700300Z",
     "start_time": "2024-04-11T07:06:03.986740600Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    }
   ],
   "source": [
    "#计算最小值或者最大值的索引的位置\n",
    "print(df_obj.loc[:,'c'].argmin())#argmin和argmax只能是series，不能是df"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-04-11T07:06:52.622656300Z",
     "start_time": "2024-04-11T07:06:52.608655300Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [
    {
     "data": {
      "text/plain": "cloth         a         b         c         d\nsize                                         \n0     -0.447114       NaN -0.381273 -1.663512\n1     -0.863693 -0.642889  0.502043 -0.647560\n2     -0.399593  0.846640  1.317067  0.342398",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th>cloth</th>\n      <th>a</th>\n      <th>b</th>\n      <th>c</th>\n      <th>d</th>\n    </tr>\n    <tr>\n      <th>size</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>-0.447114</td>\n      <td>NaN</td>\n      <td>-0.381273</td>\n      <td>-1.663512</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>-0.863693</td>\n      <td>-0.642889</td>\n      <td>0.502043</td>\n      <td>-0.647560</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>-0.399593</td>\n      <td>0.846640</td>\n      <td>1.317067</td>\n      <td>0.342398</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_obj"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-04-11T07:07:19.848800400Z",
     "start_time": "2024-04-11T07:07:19.822816Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [
    {
     "data": {
      "text/plain": "cloth\na    1\nb    1\nc    0\nd    0\ndtype: int64"
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#返回的是一个series\n",
    "#计算最小值或者最大值的索引值\n",
    "df_obj.idxmin(axis=0, skipna=True)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-04-11T07:07:58.779636900Z",
     "start_time": "2024-04-11T07:07:58.740660Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1000 entries, 0 to 999\n",
      "Data columns (total 12 columns):\n",
      " #   Column              Non-Null Count  Dtype  \n",
      "---  ------              --------------  -----  \n",
      " 0   Rank                1000 non-null   int64  \n",
      " 1   Title               1000 non-null   object \n",
      " 2   Genre               1000 non-null   object \n",
      " 3   Description         1000 non-null   object \n",
      " 4   Director            1000 non-null   object \n",
      " 5   Actors              1000 non-null   object \n",
      " 6   Year                1000 non-null   int64  \n",
      " 7   Runtime (Minutes)   1000 non-null   int64  \n",
      " 8   Rating              1000 non-null   float64\n",
      " 9   Votes               1000 non-null   int64  \n",
      " 10  Revenue (Millions)  872 non-null    float64\n",
      " 11  Metascore           936 non-null    float64\n",
      "dtypes: float64(3), int64(4), object(5)\n",
      "memory usage: 93.9+ KB\n",
      "None\n",
      "   Rank                    Title                     Genre  \\\n",
      "0     1  Guardians of the Galaxy   Action,Adventure,Sci-Fi   \n",
      "1     2               Prometheus  Adventure,Mystery,Sci-Fi   \n",
      "2     3                    Split           Horror,Thriller   \n",
      "3     4                     Sing   Animation,Comedy,Family   \n",
      "4     5            Suicide Squad  Action,Adventure,Fantasy   \n",
      "\n",
      "                                         Description              Director  \\\n",
      "0  A group of intergalactic criminals are forced ...            James Gunn   \n",
      "1  Following clues to the origin of mankind, a te...          Ridley Scott   \n",
      "2  Three girls are kidnapped by a man with a diag...    M. Night Shyamalan   \n",
      "3  In a city of humanoid animals, a hustling thea...  Christophe Lourdelet   \n",
      "4  A secret government agency recruits some of th...            David Ayer   \n",
      "\n",
      "                                              Actors  Year  Runtime (Minutes)  \\\n",
      "0  Chris Pratt, Vin Diesel, Bradley Cooper, Zoe S...  2014                121   \n",
      "1  Noomi Rapace, Logan Marshall-Green, Michael Fa...  2012                124   \n",
      "2  James McAvoy, Anya Taylor-Joy, Haley Lu Richar...  2016                117   \n",
      "3  Matthew McConaughey,Reese Witherspoon, Seth Ma...  2016                108   \n",
      "4  Will Smith, Jared Leto, Margot Robbie, Viola D...  2016                123   \n",
      "\n",
      "   Rating   Votes  Revenue (Millions)  Metascore  \n",
      "0     8.1  757074              333.13       76.0  \n",
      "1     7.0  485820              126.46       65.0  \n",
      "2     7.3  157606              138.12       62.0  \n",
      "3     7.2   60545              270.32       59.0  \n",
      "4     6.2  393727              325.02       40.0  \n"
     ]
    },
    {
     "data": {
      "text/plain": "              Rank         Year  Runtime (Minutes)       Rating         Votes  \\\ncount  1000.000000  1000.000000        1000.000000  1000.000000  1.000000e+03   \nmean    500.500000  2012.783000         113.172000     6.723200  1.698083e+05   \nstd     288.819436     3.205962          18.810908     0.945429  1.887626e+05   \nmin       1.000000  2006.000000          66.000000     1.900000  6.100000e+01   \n25%     250.750000  2010.000000         100.000000     6.200000  3.630900e+04   \n50%     500.500000  2014.000000         111.000000     6.800000  1.107990e+05   \n75%     750.250000  2016.000000         123.000000     7.400000  2.399098e+05   \nmax    1000.000000  2016.000000         191.000000     9.000000  1.791916e+06   \n\n       Revenue (Millions)   Metascore  \ncount          872.000000  936.000000  \nmean            82.956376   58.985043  \nstd            103.253540   17.194757  \nmin              0.000000   11.000000  \n25%             13.270000   47.000000  \n50%             47.985000   59.500000  \n75%            113.715000   72.000000  \nmax            936.630000  100.000000  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Rank</th>\n      <th>Year</th>\n      <th>Runtime (Minutes)</th>\n      <th>Rating</th>\n      <th>Votes</th>\n      <th>Revenue (Millions)</th>\n      <th>Metascore</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>count</th>\n      <td>1000.000000</td>\n      <td>1000.000000</td>\n      <td>1000.000000</td>\n      <td>1000.000000</td>\n      <td>1.000000e+03</td>\n      <td>872.000000</td>\n      <td>936.000000</td>\n    </tr>\n    <tr>\n      <th>mean</th>\n      <td>500.500000</td>\n      <td>2012.783000</td>\n      <td>113.172000</td>\n      <td>6.723200</td>\n      <td>1.698083e+05</td>\n      <td>82.956376</td>\n      <td>58.985043</td>\n    </tr>\n    <tr>\n      <th>std</th>\n      <td>288.819436</td>\n      <td>3.205962</td>\n      <td>18.810908</td>\n      <td>0.945429</td>\n      <td>1.887626e+05</td>\n      <td>103.253540</td>\n      <td>17.194757</td>\n    </tr>\n    <tr>\n      <th>min</th>\n      <td>1.000000</td>\n      <td>2006.000000</td>\n      <td>66.000000</td>\n      <td>1.900000</td>\n      <td>6.100000e+01</td>\n      <td>0.000000</td>\n      <td>11.000000</td>\n    </tr>\n    <tr>\n      <th>25%</th>\n      <td>250.750000</td>\n      <td>2010.000000</td>\n      <td>100.000000</td>\n      <td>6.200000</td>\n      <td>3.630900e+04</td>\n      <td>13.270000</td>\n      <td>47.000000</td>\n    </tr>\n    <tr>\n      <th>50%</th>\n      <td>500.500000</td>\n      <td>2014.000000</td>\n      <td>111.000000</td>\n      <td>6.800000</td>\n      <td>1.107990e+05</td>\n      <td>47.985000</td>\n      <td>59.500000</td>\n    </tr>\n    <tr>\n      <th>75%</th>\n      <td>750.250000</td>\n      <td>2016.000000</td>\n      <td>123.000000</td>\n      <td>7.400000</td>\n      <td>2.399098e+05</td>\n      <td>113.715000</td>\n      <td>72.000000</td>\n    </tr>\n    <tr>\n      <th>max</th>\n      <td>1000.000000</td>\n      <td>2016.000000</td>\n      <td>191.000000</td>\n      <td>9.000000</td>\n      <td>1.791916e+06</td>\n      <td>936.630000</td>\n      <td>100.000000</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "\n",
    "file_path = \"IMDB-Movie-Data.csv\"\n",
    "df = pd.read_csv(file_path) #不加路径默认当前路径\n",
    "# 打印数据信息\n",
    "print(df.info()) #查看数据的信息\n",
    "print(df.head()) #查看数值类型的数据的信息\n",
    "\n",
    "df.describe()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-04-11T07:17:17.904264900Z",
     "start_time": "2024-04-11T07:17:17.811317300Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--------------------------------------------------\n",
      "644\n",
      "644\n"
     ]
    }
   ],
   "source": [
    "#这1000部电影有多少导演和演员\n",
    "# # 获取平均评分\n",
    "# print(df[\"Rating\"].mean())\n",
    "print('-'*50)\n",
    "# 导演的人数\n",
    "print(len(set(df[\"Director\"].tolist())))\n",
    "print(len(df[\"Director\"].unique())) #推荐这种方式"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-04-11T07:19:40.818587500Z",
     "start_time": "2024-04-11T07:19:40.804593900Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2015\n"
     ]
    }
   ],
   "source": [
    "# # 获取演员的人数 #二维列表\n",
    "temp_actors_list = df[\"Actors\"].str.split(\", \").tolist()\n",
    "# print(temp_actors_list)\n",
    "actors_list = [i for j in temp_actors_list for i in j]  #二维展为一维\n",
    "actors_num = len(set(actors_list)) #set去重\n",
    "print(actors_num) #演员的数量"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-04-11T07:23:24.450590500Z",
     "start_time": "2024-04-11T07:23:24.400618800Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['50 Cent' 'A.C. Peterson' 'AJ Michalka' ... 'Émilie Leclerc'\n",
      " 'Ólafur Darri Ólafsson' 'Óscar Jaenada']\n"
     ]
    },
    {
     "data": {
      "text/plain": "array([1, 1, 1, ..., 1, 1, 1], dtype=int64)"
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#想知道每个演员出演的电影数量\n",
    "u,indices = np.unique(actors_list,return_counts = True)\n",
    "print (u)\n",
    "indices"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-11T07:27:03.333563600Z",
     "start_time": "2024-04-11T07:27:03.299529Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "### 8.3.1 电影时长的关系"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "66 191\n",
      "125\n",
      "--------------------------------------------------\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 1600x640 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# rating,runtime分布情况\n",
    "# 选择图形，直方图\n",
    "# 准备数据\n",
    "runtime_data = df[\"Runtime (Minutes)\"].values\n",
    "\n",
    "max_runtime = runtime_data.max()\n",
    "min_runtime = runtime_data.min()\n",
    "print(min_runtime,max_runtime)\n",
    "# 计算组数\n",
    "print(max_runtime - min_runtime)\n",
    "print('-'*50)\n",
    "num_bin = (max_runtime - min_runtime) // 5\n",
    "\n",
    "# 设置图形的大小\n",
    "plt.figure(figsize=(20, 8), dpi=80)\n",
    "# 第二个bins参数必须为int或sequence或str，bins代表划分为多少个单元\n",
    "plt.hist(runtime_data, int(num_bin))\n",
    "plt.grid(alpha=0.5) #alpha是透明度\n",
    "#range第三个参数是步长\n",
    "plt.xticks(range(min_runtime, max_runtime + 5,5))\n",
    "\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-04-11T07:31:21.534297400Z",
     "start_time": "2024-04-11T07:31:21.192494800Z"
    }
   }
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "# 电影评分的分布情况（放到最后讲解）"
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6.723199999999999\n",
      "<class 'numpy.ndarray'>\n",
      "--------------------------------------------------\n",
      "9.0 1.9\n"
     ]
    }
   ],
   "source": [
    "\n",
    "# 获取平均评分\n",
    "print(df[\"Rating\"].mean())\n",
    "\n",
    "# rating,runtime分布情况\n",
    "# 选择图形，直方图\n",
    "# 准备数据\n",
    "runtime_data = df[\"Rating\"].values\n",
    "print(type(runtime_data))\n",
    "max_runtime = runtime_data.max()\n",
    "min_runtime = runtime_data.min()\n",
    "print('-'*50)\n",
    "print(max_runtime,min_runtime) #最大值最小值电影评分"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-04-11T07:32:15.208107800Z",
     "start_time": "2024-04-11T07:32:15.195114800Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最大评分减去最小评分为7.1\n",
      "组数为14.0\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 1600x640 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 计算组数\n",
    "print(f'最大评分减去最小评分为{max_runtime - min_runtime}')\n",
    "num_bin = (max_runtime - min_runtime) // 0.5\n",
    "\n",
    "print(f'组数为{num_bin}')\n",
    "# 设置图形的大小\n",
    "plt.figure(figsize=(20, 8), dpi=80)\n",
    "# 第二个bins参数必须为int或sequence或str，bins代表划分为多少个单元\n",
    "plt.hist(runtime_data, int(num_bin))\n",
    "plt.grid(alpha=0.5)\n",
    "#因为range的步长不支持0.5,自己做一个列表\n",
    "_x = [min_runtime+0.1]\n",
    "i = min_runtime+0.1\n",
    "while i <= max_runtime + 0.5:\n",
    "    i = i + 0.5\n",
    "    _x.append(i)\n",
    "\n",
    "plt.xticks(_x) #设置x轴的刻度\n",
    "\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-04-11T07:33:29.020304600Z",
     "start_time": "2024-04-11T07:33:28.791401Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "### 8.3.3 导演要拍什么题材电影"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "\n",
    "\n",
    "print(df[\"Genre\"].head(3))  #看前几条数据，掌握格式，内容类型"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "20\n",
      "     Western  Mystery  Action  Thriller  Sci-Fi  History  Animation  Family  \\\n",
      "0        0.0      0.0     0.0       0.0     0.0      0.0        0.0     0.0   \n",
      "1        0.0      0.0     0.0       0.0     0.0      0.0        0.0     0.0   \n",
      "2        0.0      0.0     0.0       0.0     0.0      0.0        0.0     0.0   \n",
      "3        0.0      0.0     0.0       0.0     0.0      0.0        0.0     0.0   \n",
      "4        0.0      0.0     0.0       0.0     0.0      0.0        0.0     0.0   \n",
      "..       ...      ...     ...       ...     ...      ...        ...     ...   \n",
      "995      0.0      0.0     0.0       0.0     0.0      0.0        0.0     0.0   \n",
      "996      0.0      0.0     0.0       0.0     0.0      0.0        0.0     0.0   \n",
      "997      0.0      0.0     0.0       0.0     0.0      0.0        0.0     0.0   \n",
      "998      0.0      0.0     0.0       0.0     0.0      0.0        0.0     0.0   \n",
      "999      0.0      0.0     0.0       0.0     0.0      0.0        0.0     0.0   \n",
      "\n",
      "     Drama  Adventure  Sport  Music  Comedy  War  Horror  Crime  Musical  \\\n",
      "0      0.0        0.0    0.0    0.0     0.0  0.0     0.0    0.0      0.0   \n",
      "1      0.0        0.0    0.0    0.0     0.0  0.0     0.0    0.0      0.0   \n",
      "2      0.0        0.0    0.0    0.0     0.0  0.0     0.0    0.0      0.0   \n",
      "3      0.0        0.0    0.0    0.0     0.0  0.0     0.0    0.0      0.0   \n",
      "4      0.0        0.0    0.0    0.0     0.0  0.0     0.0    0.0      0.0   \n",
      "..     ...        ...    ...    ...     ...  ...     ...    ...      ...   \n",
      "995    0.0        0.0    0.0    0.0     0.0  0.0     0.0    0.0      0.0   \n",
      "996    0.0        0.0    0.0    0.0     0.0  0.0     0.0    0.0      0.0   \n",
      "997    0.0        0.0    0.0    0.0     0.0  0.0     0.0    0.0      0.0   \n",
      "998    0.0        0.0    0.0    0.0     0.0  0.0     0.0    0.0      0.0   \n",
      "999    0.0        0.0    0.0    0.0     0.0  0.0     0.0    0.0      0.0   \n",
      "\n",
      "     Romance  Biography  Fantasy  \n",
      "0        0.0        0.0      0.0  \n",
      "1        0.0        0.0      0.0  \n",
      "2        0.0        0.0      0.0  \n",
      "3        0.0        0.0      0.0  \n",
      "4        0.0        0.0      0.0  \n",
      "..       ...        ...      ...  \n",
      "995      0.0        0.0      0.0  \n",
      "996      0.0        0.0      0.0  \n",
      "997      0.0        0.0      0.0  \n",
      "998      0.0        0.0      0.0  \n",
      "999      0.0        0.0      0.0  \n",
      "\n",
      "[1000 rows x 20 columns]\n"
     ]
    }
   ],
   "source": [
    "# 统计分类的列表\n",
    "temp_list = df[\"Genre\"].str.split(\",\").tolist()  # [[],[],[]]\n",
    "# 二维变为一维\n",
    "genre_list = list(set([i for j in temp_list for i in j]))\n",
    "print(len(genre_list)) # 20个题材类型\n",
    "# 构造全为0的数组，行是原来的样本数，列是题材类型数目，one-hot编码，\n",
    "zeros_df = pd.DataFrame(np.zeros((df.shape[0], len(genre_list))), columns=genre_list)\n",
    "print(zeros_df)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-04-11T07:56:12.033303400Z",
     "start_time": "2024-04-11T07:56:11.982332200Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "outputs": [
    {
     "data": {
      "text/plain": "   Western  Mystery  Action  Thriller  Sci-Fi  History  Animation  Family  \\\n0      0.0      0.0     1.0       0.0     1.0      0.0        0.0     0.0   \n1      0.0      1.0     0.0       0.0     1.0      0.0        0.0     0.0   \n2      0.0      0.0     0.0       1.0     0.0      0.0        0.0     0.0   \n\n   Drama  Adventure  Sport  Music  Comedy  War  Horror  Crime  Musical  \\\n0    0.0        1.0    0.0    0.0     0.0  0.0     0.0    0.0      0.0   \n1    0.0        1.0    0.0    0.0     0.0  0.0     0.0    0.0      0.0   \n2    0.0        0.0    0.0    0.0     0.0  0.0     1.0    0.0      0.0   \n\n   Romance  Biography  Fantasy  \n0      0.0        0.0      0.0  \n1      0.0        0.0      0.0  \n2      0.0        0.0      0.0  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Western</th>\n      <th>Mystery</th>\n      <th>Action</th>\n      <th>Thriller</th>\n      <th>Sci-Fi</th>\n      <th>History</th>\n      <th>Animation</th>\n      <th>Family</th>\n      <th>Drama</th>\n      <th>Adventure</th>\n      <th>Sport</th>\n      <th>Music</th>\n      <th>Comedy</th>\n      <th>War</th>\n      <th>Horror</th>\n      <th>Crime</th>\n      <th>Musical</th>\n      <th>Romance</th>\n      <th>Biography</th>\n      <th>Fantasy</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>1.0</td>\n      <td>0.0</td>\n      <td>1.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>1.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>0.0</td>\n      <td>1.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>1.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>1.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>1.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>1.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 给每个电影出现分类的位置赋值1,one-hot的中文是独热码\n",
    "for i in range(df.shape[0]):\n",
    "    # zeros_df.loc[0,[\"Sci-fi\",\"Mucical\"]] = 1\n",
    "    #temp_list是二维列表，temp_list[i]是一个一维列表\n",
    "    zeros_df.loc[i, temp_list[i]] = 1 #temp_list[i]是一个列表，里面是分类\n",
    "\n",
    "zeros_df.head(3)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-04-11T07:57:59.068999700Z",
     "start_time": "2024-04-11T07:57:58.285450800Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Western        7.0\n",
      "Mystery      106.0\n",
      "Action       303.0\n",
      "Thriller     195.0\n",
      "Sci-Fi       120.0\n",
      "History       29.0\n",
      "Animation     49.0\n",
      "Family        51.0\n",
      "Drama        513.0\n",
      "Adventure    259.0\n",
      "Sport         18.0\n",
      "Music         16.0\n",
      "Comedy       279.0\n",
      "War           13.0\n",
      "Horror       119.0\n",
      "Crime        150.0\n",
      "Musical        5.0\n",
      "Romance      141.0\n",
      "Biography     81.0\n",
      "Fantasy      101.0\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "# 统计每个分类的电影的数量和，genre_count是什么类型？\n",
    "genre_count = zeros_df.sum(axis=0)\n",
    "print(genre_count)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-04-11T07:59:49.259737600Z",
     "start_time": "2024-04-11T07:59:49.219757700Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 1600x640 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 排序\n",
    "genre_count = genre_count.sort_values()\n",
    "_x = genre_count.index\n",
    "_y = genre_count.values\n",
    "# 画图\n",
    "plt.figure(figsize=(20, 8), dpi=80)\n",
    "plt.bar(range(len(_x)), _y, width=0.4, color=\"orange\")\n",
    "plt.xticks(range(len(_x)), _x)\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-04-11T08:00:10.232345400Z",
     "start_time": "2024-04-11T08:00:09.990394Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [],
   "metadata": {
    "collapsed": false
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  },
  "pycharm": {
   "stem_cell": {
    "cell_type": "raw",
    "source": [
     "# 8 Pandas统计计算和描述\n"
    ],
    "metadata": {
     "collapsed": false
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
